/**
 * @author：anlzou
 * @Date：Created in4:05 2021/3/27
 * @Github：https://github.com/anlzou
 * @Description：
 */
package com.anlzou.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapDemo01 {
    /*
    * HashMap 为 Map 实现的接口
    */
    private Map<String,Integer> map = new HashMap<String, Integer>();

    public void put(String key,Integer value){
        this.map.put(key,value);
    }

    public void disp(String strKey){
        System.out.println(this.map.get(strKey));
    }

    /*
    * 遍历map方法一
    * entrySet()的返回值也是返回一个Set集合，此集合的类型为Map.Entry
    */
    public void dispAll_1(){
        for (Map.Entry<String,Integer> entry:map.entrySet()) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }

    /*
    * 遍历map方法二
    * keySet()方法返回值是Map中key值的集合
    * 在for循环中遍历key或者values，一般适用于只需要map中的key或者value时使用，在性能上比使用entrySet较好
    */
    public void dispAll_2(){
        for (String key:map.keySet()){
            System.out.println(key+":"+map.get(key));
        }
    }

    /*
    * 遍历map方法三
    * 通过Iterator遍历
    * 效率高,以后一定要使用此种方式
    */
    public void dispAll_3(){
        Iterator<Map.Entry<String,Integer>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String,Integer> entry = iterator.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }

    /*
    * 效率高,以后一定要使用此种方式
    */
    public void dispAll_3_Plus(){
        Iterator iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry entry = (Map.Entry) iterator.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }
}
